//package com.atomone.epublib.widget.page;
//
//
//import com.atomone.epublib.manager.BookRepository;
//import com.atomone.epublib.model.BookChapterBean;
//import com.atomone.epublib.model.CollBookBean;
//import com.atomone.epublib.model.EpubChapter;
//import com.atomone.epublib.utils.BookManager;
//import com.atomone.epublib.utils.Constant;
//import com.atomone.epublib.utils.FileUtils;
//import com.atomone.epublib.utils.StringUtils;
//
//
//import java.io.BufferedReader;
//import java.io.File;
//import java.io.FileReader;
//import java.io.Reader;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * 网络页面加载器
// *
// * @author liyayun
// */
//
//public class NetPageLoader extends PageLoader {
//    private static final String TAG = "PageFactory";
//
//    public NetPageLoader(PageView pageView, CollBookBean collBook) {
//        super(pageView, collBook);
//    }
//
//    private List<EpubChapter> convertEpubChapter(List<BookChapterBean> bookChapters) {
//        List<EpubChapter> EpubChapters = new ArrayList<>(bookChapters.size());
//        for (BookChapterBean bean : bookChapters) {
//            EpubChapter chapter = new EpubChapter();
//            chapter.bookId = bean.getBookId();
//            chapter.title = bean.getTitle();
//            chapter.link = bean.getLink();
//            EpubChapters.add(chapter);
//        }
//        return EpubChapters;
//    }
//
//    @Override
//    public void refreshChapterList() {
//        if (mCollBook.getBookChapters() == null)
//            return;
//
//        // 将 BookChapter 转换成当前可用的 EpubChapter
//        mChapterList = convertEpubChapter(mCollBook.getBookChapters());
//        isChapterListPrepare = true;
//
//        // 目录加载完成，执行回调操作。
//        if (mPageChangeListener != null) {
//            mPageChangeListener.onCategoryFinish(mChapterList);
//        }
//
//        // 如果章节未打开
//        if (!isChapterOpen()) {
//            // 打开章节
//            openChapter();
//        }
//    }
//
//    @Override
//    protected BufferedReader getChapterReader(EpubChapter chapter) throws Exception {
//        File file = new File(Constant.BOOK_CACHE_PATH + mCollBook.get_id()
//                + File.separator + chapter.title + FileUtils.SUFFIX_NB);
//        if (!file.exists()) {
//            return null;
//        }
//
//        Reader         reader = new FileReader(file);
//        BufferedReader br     = new BufferedReader(reader);
//        return br;
//    }
//
//    @Override
//    protected boolean hasChapterData(EpubChapter chapter) {
//        return BookManager.isChapterCached(mCollBook.get_id(), chapter.title);
//    }
//
//    // 装载上一章节的内容
//    @Override
//    boolean parsePrevChapter() {
//        boolean isRight = super.parsePrevChapter();
//
//        if (mStatus == STATUS_FINISH) {
//            loadPrevChapter();
//        } else if (mStatus == STATUS_LOADING) {
//            loadCurrentChapter();
//        }
//        return isRight;
//    }
//
//    // 装载当前章内容。
//    @Override
//    boolean parseCurChapter() {
//        boolean isRight = super.parseCurChapter();
//
//        if (mStatus == STATUS_LOADING) {
//            loadCurrentChapter();
//        }
//        return isRight;
//    }
//
//    // 装载下一章节的内容
//    @Override
//    boolean parseNextChapter() {
//        boolean isRight = super.parseNextChapter();
//
//        if (mStatus == STATUS_FINISH) {
//            loadNextChapter();
//        } else if (mStatus == STATUS_LOADING) {
//            loadCurrentChapter();
//        }
//
//        return isRight;
//    }
//
//    /**
//     * 加载当前页的前面两个章节
//     */
//    private void loadPrevChapter() {
//        if (mPageChangeListener != null) {
//            int end   = mCurChapterPos;
//            int begin = end - 2;
//            if (begin < 0) {
//                begin = 0;
//            }
//
//            requestChapters(begin, end);
//        }
//    }
//
//    /**
//     * 加载前一页，当前页，后一页。
//     */
//    private void loadCurrentChapter() {
//        if (mPageChangeListener != null) {
//            int begin = mCurChapterPos;
//            int end   = mCurChapterPos;
//
//            // 是否当前不是最后一章
//            if (end < mChapterList.size()) {
//                end = end + 1;
//                if (end >= mChapterList.size()) {
//                    end = mChapterList.size() - 1;
//                }
//            }
//
//            // 如果当前不是第一章
//            if (begin != 0) {
//                begin = begin - 1;
//                if (begin < 0) {
//                    begin = 0;
//                }
//            }
//
//            requestChapters(begin, end);
//        }
//    }
//
//    /**
//     * 加载当前页的后两个章节
//     */
//    private void loadNextChapter() {
//        if (mPageChangeListener != null) {
//
//            // 提示加载后两章
//            int begin = mCurChapterPos + 1;
//            int end   = begin + 1;
//
//            // 判断是否大于最后一章
//            if (begin >= mChapterList.size()) {
//                // 如果下一章超出目录了，就没有必要加载了
//                return;
//            }
//
//            if (end > mChapterList.size()) {
//                end = mChapterList.size() - 1;
//            }
//
//            requestChapters(begin, end);
//        }
//    }
//
//    private void requestChapters(int start, int end) {
//        // 检验输入值
//        if (start < 0) {
//            start = 0;
//        }
//
//        if (end >= mChapterList.size()) {
//            end = mChapterList.size() - 1;
//        }
//
//
//        List<EpubChapter> chapters = new ArrayList<>();
//
//        // 过滤，哪些数据已经加载了
//        for (int i = start; i <= end; ++i) {
//            EpubChapter EpubChapter = mChapterList.get(i);
//            if (!hasChapterData(EpubChapter)) {
//                chapters.add(EpubChapter);
//            }
//        }
//
//        if (!chapters.isEmpty()) {
//            mPageChangeListener.requestChapters(chapters);
//        }
//    }
//
//    @Override
//    public void saveRecord() {
//        super.saveRecord();
//        if (mCollBook != null && isChapterListPrepare) {
//            //表示当前CollBook已经阅读
//            mCollBook.setIsUpdate(false);
//            mCollBook.setLastRead(StringUtils.
//                    dateConvert(System.currentTimeMillis(), Constant.FORMAT_BOOK_DATE));
//            //直接更新
//            BookRepository.getInstance()
//                    .saveCollBook(mCollBook);
//        }
//    }
//}
//
